#if !defined( constantsH)
#define constantsH

#include <string>
#include <vector>

// constants for the program states
const int STATE_MENU(		0);
const int STATE_PLAY(		1);
const int STATE_TOOLSET(	2);
const int STATE_TEST(		3);

// constants for the width and height of one character outputted by the Text class
const int CHAR_WIDTH( 13);
const int CHAR_HEIGHT( 20);

// constant for the dimension of a toolset grid square
const int GRID_SIZE( 5);

// constant for the scale factor of the mouse cursor (relative to the window size) e.g. "cursor_width = CURSOR_SCALE/window_width;"
const int CURSOR_SCALE( 20);

// constants for the height of the player
const int PLAYER_HEIGHT_VERTICAL(	12);
const int PLAYER_HEIGHT_CROUCH(		4);

// constant for the movement reduction factor
const int PLAYER_MOVEMENT_FACTOR(	3);

// constant vector for version numbers
static const std::string v[] =
{
	"1.0", "1.1", "1.2", "null"
};
const std::vector<std::string> versions( v, v+sizeof( v)/sizeof( v[0]));

// constants for file paths
const std::string PATH_AUDIO(			"audio/");
const std::string PATH_MODELS(			"models/");
const std::string PATH_ORTHOGRAPHIC(	"models/textures/");
const std::string PATH_MODULES(			"modules/");

const std::string FILE_ASSETS(			"assets");
const std::string FILE_MODULE_TEST(		"active_module");

const std::string FILE_EXTENSION(		".is");
const std::string MODULE_EXTENSION(		".mod");

// constants for file writing/reading
// - assets file
const std::string OBJECT_MODEL(			"$Model");
const std::string OBJECT_AUDIO(			"$Audio");
const std::string OBJECT_IGNORE(		"$Ignore");

// - module file
const std::string LOCATOR_VERSION(		"$Version");
const std::string LOCATOR_LEVEL_TOTAL(	"$LevelTotal");
const std::string LOCATOR_LEVEL(		"$LevelNumber");
const std::string START_POSITION(		"$StartPosition");
const std::string END_POSITION(			"$EndPosition");

const std::string OBJECT_WORLD(			"$WorldObject");
//const std::string OBJECT_WORLD(			"$FloorObject");
const std::string OBJECT_WAYPOINT(		"$Waypoint");

// - any/all files
const std::string WAYPOINT_START(		"object_waypoint_start.X");
const std::string WAYPOINT_END(			"object_waypoint_end.X");
const std::string END(					"$End");
const std::string END_OF_FILE(			"$EndOfFile");

#endif